Techniques for choosing a position on a display having a cursor

ABSTRACT

Techniques are provided for choosing a position on a display having a cursor. In one aspect, an exemplary method, which can be computer-implemented, includes the steps of automatically moving the cursor in a predetermined during-selection mode in response to a first user-initiated action, and, responsive to a second user-initiated action when the cursor is at a first location, ceasing the moving of the cursor in the predetermined during-selection mode, and causing a choosing action to be performed at the first location, such that the first location is chosen as the position

CROSS REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.11/375,784, filed Mar. 15, 2006, now U.S. Pat. No. 7,523,418,incorporated by reference herein.

FIELD OF THE INVENTION

The present invention generally relates to information technology anddata processing, and, more particularly, to techniques for choosing aposition on a display having a cursor.

BACKGROUND OF THE INVENTION

A common method for interacting with computer systems is to use apointing device such as a mouse to locate and click on areas of agraphical user interface (GUI), in order to activate desired functionsof that GUI. Sometimes users are required to precisely position theon-screen cursor over a very small screen area If the desired screenarea is very small, or if the user is in a moving environment such as atrain, or if the user has a physical impairment that affects his or hermotor skills, it may be very difficult to accurately point at and clickon the desired screen area.

US Patent Publication No 20050216866 of Rosen et al discloses a systemfor replacing a cursor image in connection with displaying the contentsof a web page In particular, the Rosen et al reference teaches a systemfor modifying a cursor image, as displayed on a video monitor of aremote terminal, to a specific image having a desired shape andappearance The system stores cursor image data corresponding to thespecific image, and a cursor display code. The cursor display codecontains information in response to which the cursor image is modifiedto the specific image. A server computer transmits specified informationto the remote terminal. The information includes at least one cursordisplay instruction. The cursor display instruction is operable tomodify, in conjunction with the cursor information and the cursor imagedata, a cursor image displayed by a display of the remote terminal inthe shape and appearance of the specific image.

Rosen et al. teach that the position, as well as the image, of the userterminal's cursor may be controlled by a remote server. Additionalinformation could be passed to a Cursor Display Code via Cursor DisplayInstructions The additional information passed to the Cursor DisplayCode would contain code which indicates: (1) that the cursor positioncontrol is intended, (2) the conditions under which the cursor should bemoved, and (3) the source of the data which specifies the particularmovement that is intended. The latter could be stored in memory on aremote server and retrieved in a manner similar to retrieving CursorDisplay Instructions or the Cursor Display Code For example, if no userinput is received for a specified interval, the cursor image couldchange and the position of the cursor could be set such that it followsa specified trajectory for several seconds, then reverts to its originalstate.

Rosen et al do not teach any method of target acquisition

It would be desirable to overcome the limitations in previousapproaches.

SUMMARY OF THE INVENTION

Principles of the present invention provide techniques for choosing aposition on a display having a cursor In one aspect, an exemplarymethod, which can be computer-implemented, includes the steps ofautomatically moving the cursor in a predetermined during-selection modein response to a first user-initiated action, and, responsive to asecond user-initiated action when the cursor is at a first location,ceasing the moving of the cursor in the predetermined during-selectionmode, and causing a choosing action to be performed at the firstlocation, such that the first location is chosen as the position.

In another aspect, another exemplary method, which can also becomputer-implemented, can include the steps of automatically moving thecursor in a predetermined manner (such as a pre-selection mode) inresponse to a pause in user-initiated cursor motion, and, responsive toa user-initiated action when the cursor is at a first location, ceasingthe moving of the cursor in the predetermined manner, and causing achoosing action to be performed at the first location, such that thefirst location is chosen as the position. The two exemplary methods canbe combined; in one example of such a combination, the choosing actionperformed in the exemplary method described in this paragraph cancorrespond to commencement of the automatic motion of the cursor in thepredetermined during-selection mode.

One or more embodiments of the invention can be implemented in the formof a computer product including a computer usable medium with computerusable program code for performing the method steps indicated.Furthermore, one or more embodiments of the invention can be implementedin the form of an apparatus including a memory and at least oneprocessor that is coupled to the memory and operative to performexemplary method steps.

One or more embodiments of the invention may provide one or morebeneficial technical effects, such as, for example, seamless combinationof user- and system-controlled movement to provide a point-and-clickmethod that is independent of the targets on the display.

These and other objects, features and advantages of the presentinvention will become apparent from the following detailed descriptionof illustrative embodiments thereof, which is to be read in connectionwith the accompanying drawings

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a high level flow chart depicting exemplary method steps forchoosing a position on a display having a cursor according to an aspectof the present invention;

FIG. 2 is an overview of a system employing techniques of an embodimentof the invention;

FIG. 3 depicts exemplary system inputs and outputs;

FIG. 4 is a flow chart of exemplary detailed method steps according toan aspect of the present invention;

FIG. 5 is a continuation of the flow chart of FIG. 4;

FIG. 6 is a continuation of the flow charts of FIGS. 4 and 5;

FIG. 7 depicts exemplary aspects of an automatic move profile accordingto an embodiment of the invention;

FIG. 8 depicts exemplary aspects of automatic movement status accordingto an embodiment of the invention;

FIG. 9 depicts an exemplary flow chart for automatic movement inaccordance with FIGS. 7 and 8;

FIG. 10 depicts exemplary aspects of a configuration system inaccordance with an embodiment of the invention;

FIGS. 11-14 depict exemplary views of a display employing certaininventive techniques; and

FIG. 15 depicts a computer system that may be useful in implementing oneor more aspects and/or elements of the present invention

DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS

FIG. 1 shows a flow chart 100 of exemplary method steps in a method(which can be computer-implemented) for choosing at least one positionon a display having a cursor, according to one aspect of the invention.After beginning at block 102, the method can include the steps of,automatically moving the cursor in a predetermined during-selection moderesponsive to a first user-initiated action (e.g., holding down a mousebutton), as shown at block 110, and responsive to a seconduser-initiated action (e.g., releasing a mouse button) when the cursoris at a first location, ceasing the moving of the cursor in thepredetermined during-selection mode, and causing a choosing action to beperformed at the first location, such that the first location is chosenas the at least one position, as shown at block 114. The abbreviation“UIA” is used in the figure for “user-initiated action.”

In addition to or in lieu of the just-described steps, as shown at block104, the cursor can be automatically moved in a predetermined mannerresponsive to, e.g., a pause in user-initiated cursor motion (theautomatic movement could also be in response to an explicit user action,as discussed further below). As shown at block 108, responsive to auser-initiated action (e.g., clicking a mouse button) when the cursor isat a first location, the moving of the cursor in the predeterminedmanner can cease and a choosing action can be caused to be performed atthe first location, such that the first location is chosen as the atleast one position. Steps 104 and 108 can be performed independently ofsteps 110 and 114 as a computer-implemented method of choosing at leastone position on a display having a cursor. As discussed in the nextparagraph, one purpose for choosing the position is to initiate aselection.

In general, the exemplary steps depicted in FIG. 1 can be performed inany appropriate order, and one or more steps can be added or omitted. Inone exemplary embodiment, steps 104 and 108 are associated with apie-selection automated movement prior to steps 110 and 114, associatedwith automated movement during selection. In this case, the automaticmotion of the cursor in block 104 can be a predetermined pre-selectionmode of motion. Further, the user-initiated action referred to in step108 can be the first user-initiated action of block 110, and thechoosing action mentioned in to connection with block 108 can correspondto commencing the automatic moving of the cursor in the predeterminedduring-selection mode.

Certain additional optional steps will now be discussed. As shown atblocks 106 and 112, user-inputted cursor movement can be suppressedduring the predetermined during-selection and/or pre-selection modes ofmoving the cursor An appropriate input causing one or both of thepredetermined during-selection and pre-selection modes of motion tobecome inactive can be obtained at block 116 As per block 118, cursormotion parameters can be obtained. For example, the predeterminedduring-selection mode of motion can be determined by parametersindicative of one or more of trajectory, initial velocity, accelerationprofile, number of repetitions, reversal of direction, end location, andon-screen appearance; appropriate parameters could also be obtained forthe pre-selection mode of motion.

The user-initiated cursor motion can be accomplished via ahuman-operated pointing device such as a mouse, trackball, joystick, orthe like The first user-initiated action can be effected via depressinga button (broadly understood to include a key) on, e.g., a keypad or apointing device The second user-initiated action can include releasing abutton (again, broadly understood to include a key) on a keypad or apointing device. Of course, separate actions are possible, such as,e.g., pressing the same (or different) buttons or keys to start and tostop. Further, as noted, step 104 could be initiated in response to anexplicit user action, such as, e.g., depressing or releasing a button orkey, in lieu of or in combination with the pause in user-initiatedcursor motion. The explicit user action and/or pause in user-initiatedcursor motion are referred to generally as a pre-selection automaticmovement-initiating action.

As shown at block 120, another optional step includes facilitatingdisplay of a projected cursor trajectory in accordance with one or bothof the predetermined during-selection and pre-selection modes of movingthe cursor. As used herein, “facilitating” an action includes performingthe action, making the action easier, helping to carry the action out,or causing the action to be performed One or both of the predeterminedduring-selection and pre-selection modes of moving the cursor can becancelled in response to obtaining a user-inputted cursor movementduring, respectively, the predetermined during-selection orpre-selection modes of moving the cursor. Further, if desired,user-inputted cursor movement can be suppressed during one or both ofthe predetermined during-selection and pre-selection modes of moving thecursor, until the user-inputted cursor movement reaches a threshold, andthen, responsive to the user-inputted cursor movement reaching thethreshold, one or both of the predetermined during-selection andpie-selection modes of moving the cursor can be cancelled

As will be discussed in greater detail below, the display can beassociated with a computer having a pointing device and an operatingsystem, and as shown at block 122, the additional step of filtering astream of events passing from the pointing device to the operatingsystem can be performed. In addition to the operating system, filteringa stream of events passing from the pointing device to one or morerunning applications is also possible. While depicted as a separate stepin FIG. 1, such filtering can be an integral aspect of the way asolution implementing certain techniques of the invention is set upProcessing can continue at block 124.

Certain aspects of one or more detailed exemplary embodiments of theinvention will now be discussed. It is to be emphasized that thedetailed embodiment(s) discussed with respect to FIGS. 2-14 are intendedto be exemplary, not limiting, and that other embodiments of theinvention are possible given the teachings presented herein. FIG. 2shows the main actors involved in the interaction There is a user 210who may have a disability that affects motor control, speech or otherfunction, or may be in a situation that affects his or her abilities inthese areas (e.g. driving a car affects your ability to operate a pushbutton device). There is a cursor/selection device 211 that the useroperates. This may be a physical device such as a keyboard, mouse orbinary switch, or it may be less tangible, such as speech input, whichwould be represented by a microphone and speech recognition software. Itmay be composed of more than one physical/software device, such as atrackball and separate switch The user wishes to use thecursor/selection device in older to control a target 212. This may be apersonal computer, a household appliance (in which the input device maybe physically built in to the target) or a service provided over theInternet via the user's device. The cursor/selection device may beseparate from or integrated with the target.

The target has a display 213 on which appears a cursor 214, which marksthe current position on the display. The cursor/selection device 211 isused to move this cursor, and to select objects on the display. Itgenerates control events 216. A system 215 can implement one or moretechniques of the invention System 215 is connected to the output of thecursor/selection device 216 and provides control events 217 to thetarget The system 215 modifies some control events, generates somecontrol events, and passes some control events on to the targetunchanged. The output is handled on the target in the way it wouldnormally be handled. In addition, the system generates and consumestimer events 218 The system 215 can be configured through theconfiguration system 219, which sends configuration instructions 220 tothe system 215.

FIG. 3 illustrates the inputs 320 and outputs 322 of the system 215 inmore detail. Of note are control events that initiate selection actionson the target 301, terminate selection actions on the target 302, andmove the cursor position on the target display 303. All other controlevents 306 generated by the cursor/selection device 211 are passed on tothe target unchanged by the system 215. The system 215 also receives andacts on events 304 and 305 indicating that timers have expired. Twotimers are employed—a move timer which is used to control automaticcursor movement, and a pause timer, which expires when a certain timehas elapsed since the user last moved the cursor, and indicates when tostart a pre-selection movement.

The system 215 maintains several items of state information in order tomake decisions. AUTOMOVE 311 is a variable indicating whether automaticmovement is currently active. Selection 312 may be active or inactive.It is active when a selection has been initiated and not yet terminated.The AUTOMOVE profile 313 is a set of values (described more fully inFIG. 7) describing the form of automatic movement to be made. TheAUTOMOVE movement status 314 describes the current position within themovement profile, and is illustrated in mote detail in FIG. 8. Thecurrent cursor position 315 records where the cursor is located on thetarget display. When AUTOMOVE is active, the system also maintains acount of the distance the user has moved the cursor during the automaticcursor movement 316. In one embodiment, small amounts of cursor movementare suppressed during this period, while a total movement greater than athreshold will terminate the AUTOMOVE. Other embodiments may takealternative actions such as to suppress all cursor movement initiated bythe user during an AUTOMOVE, or to cancel an AUTOMOVE as soon as anyuser-initiated cursor movement is detected. The system 215 provides thetarget with control events including ‘clicks’ (selections) 321, cursormoves 323, initiation 324 and termination 325 of selections, and otherevents received 326 from the cursor/selection device

In FIGS. 4-6, it is assumed that the system 215 is configured such thatboth pre-selection and within selection AUTOMOVES are active. FIG. 4illustrates the procedure followed by the system 215 whenever a controlor timer event is received First, the system checks if a selection eventis currently in progress, at 401. If not, then the procedure describedin FIG. 5 is followed, as at 402 If a selection is in progress, then thesystem checks if the event received was an event indicating that theselection is to be terminated, as at block 403 (for example a mousebutton has been released). If the event is the end of a selection, thenthe system generates a selection action (e.g. a click) at the currentcursor position, at block 404. In some embodiments, the input eventstream may also contain a selection event, in which case one of the twoevents would be suppressed. The system would then stop automaticmovement (AUTOMOVE) if it was active, as shown at step 405, and cancelany active move timers.

If the event received was not a ‘terminate selection’ event, the systemcan check whether it was a cursor move event caused by the user, asshown at 406. If it was such an event, and if AUTOMOVE is active, asdetermined at 407, and if the cursor movement exceeds a thresholddistance, as determined at 408, then the cursor move is passed on to thetarget 409 and any AUTOMOVE is cancelled as shown at block 405 Thedistance moved may be calculated in several ways, but in one embodimentone can calculate the total cursor displacement initiated by the usersince the AUTOMOVE was started, and compare this to a threshold. If thetotal cursor movement does not exceed the threshold, then the movementwould be filtered out of the control event stream and not passed on tothe target, as depicted at 410 The total suppressed movement variablewould be incremented. If no AUTOMOVE was active, the user's cursormovement would be passed on to the target unchanged as shown at 411 andno other action would be taken. If the event received is not a cursormovement, then the procedure described in FIG. 6 is followed as perblock 412

FIG. 5 illustrates the procedure followed by the system when a controlor timer event is received and no selection is in progress. If the eventis an ‘initiate selection’ event 501, the system initializes themovement instructions for an AUTOMOVE as at 502, using the configurationsettings for AUTOMOVEs within a selection (the WITHIN-SELECTIONprofile). It then activates an AUTOMOVE, 503, starts the move timer, andinitializes the variables that store the total user movement that hasbeen suppressed. If the event received was an indication that the Pausetimer has expired, as at block 504, then the system initializes themovement instructions for an AUTOMOVE 505, using the configurationsettings for AUTOMOVEs prior to a selection (the PRE-SELECTION profile).It then activates an AUTOMOVE as at 503, starts the move timer, andinitializes the variables that stole the total user movement that hasbeen suppressed

If the event received is a cursor movement, as at block 506, and ifAUTOMOVE is active, as determined at 507, and if the cursor movementexceeds a threshold distance as per 508, then the cursor move is passedon to the target at 509, the Move timer is cancelled, and any AUTOMOVEis cancelled. The distance moved may be calculated in several ways, butin one embodiment one can calculate the total cursor displacementinitiated by the user since the AUTOMOVE was started, and compare thisto a threshold. If the total cursor movement does not exceed thethreshold, then at block 510 the movement would be filtered out of thecontrol event stream and not passed on to the target The totalsuppressed movement variable would be incremented. If no AUTOMOVE wasactive, then at block 511 the user's cursor movement would be passed onto the target unchanged and the Pause timer would be started, orcancelled and restarted if it was already active. If the event receivedis not a cursor movement, then the procedure described in FIG. 6 isfollowed as shown at block 512.

FIG. 6 illustrates the procedure followed by the system for events nothandled in FIG. 4 or 5. If the event received is the expiration of aMove timer 651, and if AUTOMOVE is currently active, then at 652, thesystem moves the cursor according to the movement instructions indicatedby the current movement profile and the AUTOMOVE movement status. Thecontents of a movement profile are illustrated in FIG. 7, and thecontent of an AUTOMOVE movement status are illustrated in FIG. 8. Theprocedure followed in deciding what cursor movement to follow isillustrated in FIG. 9 When the movement has been applied, the systemchecks whether the AUTOMOVE has now been completed, at 653. If so, atstep 654, AUTOMOVE is turned off and the Move timer is cancelled. Ifnot, at step 655, the Move timer is restarted. If the event received isany other control event not yet handled, as determined at 656, it ispassed on to the target unchanged as shown at step 657

FIG. 7 illustrates the information stored in a typical AUTOMOVE profile.The profile specifies the movement trajectory to be followed(profileMT). For example, a straight line at a given angle, or a spiralThe profile specifies the initial velocity with which the cursor will bemoved along the trajectory (profileStartVelocity), and the accelerationprofile to be followed (profileAP). For example, the cursor could moveat a constant speed, or it could start slowly and then accelerate to ahigher speed, and then retain that constant speed for the remainder ofthe movement. The profile also specifies whether alternate repetitionsof the movement trajectory should be reversed (profileReverse), to givea smooth movement path. If this flag is not selected then repetitions ofthe path will cause the cursor to jump back to the starting position andrepeat the movement. The profile specifies how many repetitions of themovement are to be followed (profileRepetitions), and whether the cursoris to be returned to its original position after these repetitions havebeen completed (profileRtnToOrigin).

FIG. 8 illustrates the state information that the system would storewhen an AUTOMOVE is active. This information captures the currentposition within the movement sequence, and allows the system tocalculate what automatic movement should be performed every time theMove timer expires. The status information captures the current locationof the cursor within the movement trajectory (currentMvmtPos), thecurrent direction of movement (currentDir), the current movementvelocity (currentVelocity), the location within the acceleration profile(currentAccelPos), the number of repetitions that have been completed(currentRepsDone), and the screen position from which the AUTOMOVE wasstarted (currentStartPos).

FIG. 9 is a flow chart illustrating the procedure followed to determinethe automatic cursor movement that should be taken during an AUTOMOVE,given an AUTOMOVE profile as described in FIG. 7 and an AUTOMOVEmovement starts as described in FIG. 8. If, as determined at block 901,the position within the acceleration profile is at the end of theprofile, then an acceleration value of 0 is set at step 802. Otherwise,as at 803, the current acceleration is found from the accelerationprofile and the position is incremented. The acceleration and currentvelocity are then used in block 904 to calculate the velocity for thismovement. The velocity and elapsed time since the last movement are usedto calculate the distance to be moved, also in step 804. The system thencalculates, at 905, whether the desired movement can be completed withinthe current trajectory. If so, then at 906, the cursor is moved thedesired distance along the current trajectory. If not, at 907, thesystem calculates the distance remaining after the current trajectoryhas been completed.

The number of repetitions completed (currentRepsDone) is incremented at908. If, as determined at 909, the number of repetitions completed isless than the number needed, then a new repetition is started. Thedirection of the repetition is set according to the profileReverse flag.It, as per 910, the flag indicates a reversal, then at 911 thecurrentDir value is inverted and at 912 the remaining movement isapplied along the new trajectory, updating the currentMvmtPos value Ifthe flag does not indicate reversal, then at 913 the new position iscalculated from the original starting position of the AUTOMOVE(currentStartPos). It no further repetitions are needed, and it isdetermined at 914 that the profile calls for the cursor to be returnedto its starting point, at 915, the cursor position is set tocurrentStartPos, and at 917 the AUTOMOVE is marked as being completed.If no further repetitions are needed, but the cursor does not indicate areturn to the starting position, then at 916, the cursor position is setto the end of the movement trajectory, and at 917 the AUTOMOVE is markedas being completed

FIG. 10 illustrates an embodiment of the user interface of theconfiguration system 219 shown in FIG. 2. The user is able to separatelyconfigure, and turn on and off, as shown at 1094, AUTOMOVES on pausing(pre-selection), 1090, and AUTOMOVEs during selection (In-selection),1091 The user is offered choices for the trajectory 1092, and initialvelocity and acceleration profiles 1093. In this example, initialvelocity and acceleration are combined, but alternative embodimentscould separate them, and give the user greater flexibility in specifyingthe initial direction of movement, and shape of the movement (e.g.straight line, spiral, zig zag). The user can also choose the number ofrepetitions 1095), whether to reverse alternate repetitions 1096, andwhether to return to the starting position at the end, 1097. There aremany additional configuration options that could be included; forexample, the threshold of user movement that is suppressed during anAUTOMOVE, or the visual appearance of the indicator that shows themovement path.

In one embodiment of the invention, the system is provided as a utilityprogram available to a user of a desktop computer system It can beactivated and deactivated via a control panel, and various features ofits behavior can be configured. The preferred set of configurationoptions is illustrated in FIG. 10. Through configuration, the user canchoose whether to have automatic movement only prior to selection, onlyduring selection, or both prior to and during selection. He or she canalso choose whether to have the cursor move in a straight line at aspecific angle, or a spiral. Different options can be chosen for thepre-selection and during selection movements. The user can also choosedifferent movement trajectories for movement made before selection andduring selection. Other options allow the user to select the movementvelocity and acceleration profile, the number of times the trajectoryshould be followed, and whether to reverse every second movement, sothat the cursor follows a path and then reverses it to get back to thestarting point, or follows a path and then jumps back to the startingpoint and repeats it. A separate option specifies whether the cursorshould be returned to its starting position when all movement iterationshave been completed.

In this embodiment, the user controls cursor movement on the computerdisplay using a standard computer mouse. He or she initiates a selectionaction by pressing down the left mouse button, and terminates the actionby releasing the left mouse button. In the default configuration, thesystem performs automatic movement only during a selection action Thedefault movement direction is vertically downwards with a constant,fairly slow velocity. After reaching the end of the trajectory themovement is reversed. When the cursor returns to its original positionthe movement is stopped. The movement path is displayed on the screen.In the default mode of operation it is shown as a colored bar extendingvertically downwards from the on-screen cursor image. This bar is alwaysvisible even when no selection is active. When movement is active, thecursor moves along this bar.

This mode of operation is illustrated in FIGS. 11 to 14. These figuresshow the display screen 1101, the on-screen appearance of the cursor1102, and an associated display element representing the AUTOMOVEtrajectory 1103. In FIGS. 11-14, the trajectory is shown as a lineextending vertically downwards from the cursor, and it moves with thecursor. The figures show a single on-screen target 1104, an acceptancebutton typically used in software applications to confirm a command forthe system to take some action. FIG. 11 illustrates the appearance ofthe screen before the user starts to move. FIG. 12 illustrates thescreen appearance when the user has moved the cursor 1101 near to thetarget 1102. Note that although the cursor itself is not on the target,the vertical bar 1103 does cross the target. The user knows that anAUTOMOVE from this position will place the cursor over the target. Theuser then initiates a selection action by pressing down the left mousebutton. As illustrated in FIG. 13, he or she holds down the mousebutton, and the cursor 1101 position moves along the line 1103. When thecursor 1101 position is over the target 1102, the user releases themouse button to terminate the selection. As shown in FIG. 14, thiscauses the system to generate a click event at the current position ofthe cursor 1101, and the desired target 1102 is selected.

A variety of techniques, utilizing dedicated hardware, general purposeprocessors, firmware, software, or a combination of the foregoing may beemployed to implement the present invention One or more embodiments ofthe invention can be implemented in the form of a computer productincluding a computer usable medium with computer usable program code forperforming the method steps indicated furthermore, one or moreembodiments of the invention can be implemented in the form of anapparatus including a memory and at least one processor that is coupledto the memory and operative to perform exemplary method steps.

At present, it is believed that the preferred implementation will makesubstantial use of software running on a general purpose computer orworkstation. With reference to FIG. 15, such an implementation mightemploy, for example, a processor 1502, a memory 1504, and aninput/output interface formed, for example, by a display 1506 and akeyboard 1508. The term “processor” as used herein is intended toinclude any processing device, such as, for example, one that includes aCPU (central processing unit) and/or other forms of processingcircuitry. Further, the term “processor” may refer to more than oneindividual processor. The term “memory” is intended to include memoryassociated with a processor or CPU, such as, for example, RAM (randomaccess memory), ROM (read only memory), a fixed memory device (e.g.,hard drive), a removable memory device (e.g., diskette), a flash memoryand the like. In addition, the phrase “input/output interface” as usedherein, is intended to include, for example, one or more mechanisms forinputting data to the processing unit (e.g., mouse, trackball,joystick), and one or more mechanisms for providing results associatedwith the processing unit (e.g., printer). The processor 1502, memory1504, and input/output interface such as display 1506 and keyboard 1508can be interconnected, for example, via bus 1510 as part of a dataprocessing unit 1512. Suitable interconnections, for example via bus1510, can also be provided to a network interface 1514, such as anetwork card, which can be provided to interface with a computernetwork, and to a media interface 1516, such as a diskette or CD-ROMdrive, which can be provided to interface with media 1518

Accordingly, computer software including instructions or code forperforming the methodologies of the invention, as described herein, maybe stored in one or more of the associated memory devices (e.g., ROM,fixed or removable memory) and, when ready to be utilized, loaded inpart or in whole (e.g., into RAM) and executed by a CPU Such softwarecould include, but is not limited to, firmware, resident software,microcode, and the like.

Furthermore, the invention can take the form of a computer programproduct accessible from a computer-usable or computer-readable medium(e.g., media 1518) providing program code for use by or in connectionwith a computer or any instruction execution system. For the purposes ofthis description, a computer usable or computer readable medium can beany apparatus for use by or in connection with the instruction executionsystem, apparatus, or device.

The medium can be an electronic, magnetic, optical, electromagnetic,infrared, or semiconductor system (or apparatus or device) or apropagation medium. Examples of a computer-readable medium include asemiconductor or solid-state memory (e g memory 1504), magnetic tape, aremovable computer diskette (e.g. media 1518), a random access memory(RAM), a read-only memory (ROM), a rigid magnetic disk and an opticaldisk Current examples of optical disks include compact disk-read onlymemory (CD-ROM), compact disk-read/write (CD-R/W) and DVD.

A data processing system suitable for storing and/or executing programcode will include at least one processor 1502 coupled directly orindirectly to memory elements 1504 through a system bus 1510. The memoryelements can include local memory employed during actual execution ofthe program code, bulk storage, and cache memories which providetemporarily storage of at least some program code in order to reduce thenumber of times code must be retrieved from bulk storage duringexecution.

Input/output or I/O devices (including but not limited to keyboards1508, displays 1506, pointing devices, and the like) can be coupled tothe system either directly (such as via bus 1510) or through interveningI/O controllers (omitted for clarity).

Network adapters such as network interface 1514 may also be coupled tothe system to enable the data processing system to become coupled toother data processing systems or remote printers or storage devicesthrough intervening private or public networks Modems, cable modem andEthernet cards are just a few of the currently available types ofnetwork adapters.

In any case, it should be understood that the components illustratedherein may be implemented in various forms of hardware, software, orcombinations thereof, e.g., application specific integrated circuit(s)(ASICS), functional circuitry, one or more appropriately programmedgeneral purpose digital computers with associated memory, and the like.Given the teachings of the invention provided herein, one of ordinaryskill in the related art will be able to contemplate otherimplementations of the components of the invention.

Although illustrative embodiments of the present invention have beendescribed herein with reference to the accompanying drawings, it is tobe understood that the invention is not limited to those preciseembodiments, and that various other changes and modifications may bemade by one skilled in the art without departing from the scope orspirit of the invention.

What is claimed is:
 1. A computer-implemented method of choosing atleast one position on a display having a cursor, comprising the stepsof: analyzing multiple parameters of a first user-initiated action of acursor to determine a during-selection mode associated with the cursor,wherein said multiple parameters comprise (i) a trajectory of thecursor, (ii) an initial velocity of the cursor, (iii) an accelerationprofile of the cursor, (iv) a number of repetitions of the firstuser-initiated action, and (v) a location of the cursor subsequent tothe first user-initiated action; automatically moving the cursor inaccordance with the determined during-selection mode, wherein a path ofsaid automatic movement of said cursor in the determinedduring-selection mode is determined prior to said first user-initiatedaction; responsive to a second user-initiated action when the cursor isat a first location: ceasing said moving of the cursor in saiddetermined during-selection mode; causing a choosing action to beperformed at said first location; generating a selection event of atarget item upon completion of performance of the choosing action at thefirst location; and during said automatic moving of the cursor in saiddetermined during-selection mode, suppressing during-selection cursormovement from being modified by a user input movement, unless said userinput movement exceeds a user input movement threshold for saiddetermined during-selection mode; wherein one or more steps of saidmethod are performed by one or more hardware devices.
 2. The method ofclaim 1, further comprising the additional steps of: responsive to apre-selection automatic movement-initiating action, automatically movingthe cursor in a predetermined pre-selection mode; and responsive to saidfirst user-initiated action: ceasing said moving of the cursor in saidpredetermined pre-selection mode; and commencing said automatic movingof the cursor in said determined during-selection mode.
 3. The method ofclaim 2, wherein said pre-selection automatic movement-initiating actioncomprises a pause in user-initiated cursor motion.
 4. The method ofclaim 3, wherein said user-initiated cursor motion is effected via ahuman-operated pointing device.
 5. The method of claim 2, wherein saidpre-selection automatic movement-initiating action comprises an explicituser action.
 6. The method of claim 2, further comprising the additionalstep of obtaining an input causing one of said determinedduring-selection and pre-selection modes of motion to become inactive.7. The method of claim 2, wherein said first user-initiated action iseffected via depressing a button on one of a keypad and a pointingdevice.
 8. The method of claim 2, wherein said second user-initiatedaction comprises releasing a button on one of a keypad and a pointingdevice.
 9. The method of claim 2, further comprising the additional stepof facilitating display of a projected cursor trajectory in accordancewith at least one of said determined during-selection and pre-selectionmodes of moving said cursor.
 10. The method of claim 9, furthercomprising the additional step of canceling at least one of saiddetermined during-selection and pre-selection modes of moving saidcursor, responsive to obtaining a user-inputted cursor movement duringsaid at least one of said determined during-selection and pre-selectionmodes of moving said cursor.
 11. The method of claim 2, wherein thedisplay is associated with a computer having a pointing device and anoperating system, further comprising the additional step of filtering astream of events passing from the pointing device to the operatingsystem.
 12. A computer-implemented method of choosing at least oneposition on a display having a cursor, comprising the steps of:analyzing multiple parameters of a pre-selection automatic movement-initiating action of a cursor to determine an automatic movementassociated with the cursor, wherein said multiple parameters comprise(i) a trajectory of the cursor, (ii) an initial velocity of the cursor,(iii) an acceleration profile of the cursor, (iv) a number ofrepetitions of the first user-initiated action, and (v) a location ofthe cursor subsequent to the first user-initiated action; automaticallymoving the cursor in a path according to said automatic movementassociated with the cursor; responsive to a user-initiated action whenthe cursor is at a first location: ceasing said automatic movementassociated with the cursor; causing a choosing action to be performed atthe first location, wherein one or more steps of said method areperformed by one or more hardware devices; and generating a selectionevent of a target item upon completion of performance of the choosingaction at the first location; and during said automatic movement of thecursor, suppressing pre-selection cursor movement from being modified bya user input movement, unless said user input movement exceeds auser-movement threshold.
 13. The method of claim 12, wherein saidpre-selection automatic movement-initiating action comprises a pause inuser-initiated cursor motion.
 14. The method of claim 12, wherein saidpre-selection automatic movement-initiating action comprises an explicituser action.
 15. A computer program product comprising a non-transitorytangible computer useable readable recordable storage medium havingcomputer useable program code for choosing at least one position on adisplay having a cursor, said computer program product including:computer useable program code for analyzing multiple parameters of afirst user-initiated action of a cursor to determine a during-selectionmode associated with the cursor, wherein said multiple parameterscomprise (i) a trajectory of the cursor, (ii) an initial velocity of thecursor, (iii) an acceleration profile of the cursor, (iv) a number ofrepetitions of the first user-initiated action, and (v) a location ofthe cursor subsequent to the first user-initiated action; computeruseable program code for automatically moving the cursor in accordancewith the determined during-selection mode, wherein a path of saidautomatic movement of said cursor in the determined during-selectionmode is determined prior to said first user- initiated action; computeruseable program code for, responsive to a second user-initiated actionwhen the cursor is at a first location: ceasing said moving of thecursor in said determined during-selection mode; causing a choosingaction to be performed at said first location; and generating aselection event of a target item upon completion of performance of thechoosing action at the first location; wherein one or more steps of saidmethod are performed by one or more hardware devices; and during saidautomatic moving of the cursor in said determined during-selection mode,suppressing during-selection cursor movement from being modified by auser input movement, unless said user input movement exceeds a userinput movement threshold for said determined during-selection mode. 16.The computer program product of claim 15 wherein said product furthercomprises: computer useable program code for, responsive to apre-selection automatic movement initiating action, automatically movingthe cursor in a predetermined pre-selection mode; and computer useableprogram code for, responsive to said first user-initiated action:ceasing said moving of the cursor in said predetermined pre-selectionmode; and commencing said automatic moving of the cursor in saiddetermined during-selection mode.
 17. A computer program productcomprising a non-transitory tangible computer useable readablerecordable storage medium having computer useable program code forchoosing at least one position on a display having a cursor, saidcomputer program product including: computer useable program code foranalyzing multiple parameters of a pre-selection automaticmovement-initiating action of a cursor to determine an automaticmovement associated with the cursor, wherein said multiple parameterscomprise (i) a trajectory of the cursor, (ii) an initial velocity of thecursor, (iii) an acceleration profile of the cursor, (iv) a number ofrepetitions of the first user-initiated action, and (v) a location ofthe cursor subsequent to the first user-initiated action; computeruseable program code for automatically moving the cursor in a pathaccording to said automatic movement associated with the cursor;computer useable program code for, responsive to a user-initiated actionwhen the cursor is at a first location: ceasing said automatic movementassociated with the cursor; causing a choosing action to be performed atthe first location; and generating a selection event of a target itemupon completion of performance of the choosing action at the firstlocation; and computer useable program code for, during said automaticmovement of the cursor, suppressing pre-selection cursor movement frombeing modified by a user input movement, unless said user input movementexceeds a user-movement threshold.